import 'package:flutter/material.dart';

enum ThemeName { android, ios, web, windows }

class PuzzleThemeData {
  final LinearGradient bgGradient;
  final LinearGradient mainBlockGradient;
  final LinearGradient plainBlockGradient;
  final Color buttonBgColor;
  final Color buttonFgColor;
  final Color textColor;
  final Color stepsColor;
  final Color borderColor;
  final Color borderDotsColor;

  const PuzzleThemeData({
    required this.bgGradient,
    required this.mainBlockGradient,
    required this.plainBlockGradient,
    required this.buttonBgColor,
    required this.buttonFgColor,
    required this.textColor,
    required this.stepsColor,
    required this.borderColor,
    required this.borderDotsColor,
  });
}

const themes = {
  ThemeName.android: PuzzleThemeData(
    bgGradient: LinearGradient(
      colors: [
        Color(0xffc9f2b1),
        Color(0xff8ca894),
      ],
      begin: Alignment.topLeft,
      end: Alignment.bottomRight,
    ),
    mainBlockGradient: LinearGradient(
      colors: [
        Color(0xffa6e08b),
        Color(0xff54946f),
      ],
      begin: Alignment.topCenter,
      end: Alignment.bottomCenter,
    ),
    plainBlockGradient: LinearGradient(
      colors: [
        Color(0xff4a3657),
        Color(0xff695783),
      ],
      begin: Alignment.topLeft,
      end: Alignment.bottomRight,
    ),
    buttonBgColor: Color(0xff8ca894),
    buttonFgColor: Colors.white60,
    textColor: Colors.white,
    stepsColor: Color(0xffc9f2b1),
    borderColor: Color(0xFFEEEEEE),
    borderDotsColor: Colors.white30,
  ),
  ThemeName.ios: PuzzleThemeData(
    bgGradient: LinearGradient(
      colors: [
        Color(0xff9f9f9e),
        Color(0xff666666),
      ],
      begin: Alignment.topLeft,
      end: Alignment.bottomRight,
    ),
    mainBlockGradient: LinearGradient(
      colors: [
        Color(0xffd72121),
        Color(0xffb92424),
      ],
      begin: Alignment.topCenter,
      end: Alignment.bottomCenter,
    ),
    plainBlockGradient: LinearGradient(
      colors: [
        Color(0xff504c4c),
        Color(0xff3D3838),
      ],
      begin: Alignment.topLeft,
      end: Alignment.bottomRight,
    ),
    buttonBgColor: Color(0xff9f9f9e),
    buttonFgColor: Colors.white60,
    textColor: Color(0xff3D3838),
    stepsColor: Color(0xff9f9f9e),
    borderColor: Color(0xFFEEEEEE),
    borderDotsColor: Colors.white30,
  ),
  ThemeName.web: PuzzleThemeData(
    bgGradient: LinearGradient(
      colors: [
        Color(0xff6397f8),
        Color(0xff538ae5),
      ],
      begin: Alignment.topLeft,
      end: Alignment.bottomRight,
    ),
    mainBlockGradient: LinearGradient(
      colors: [
        Color(0xffffd054),
        Color(0xfff6ba17),
      ],
      begin: Alignment.topCenter,
      end: Alignment.bottomCenter,
    ),
    plainBlockGradient: LinearGradient(
      colors: [
        Color(0xffee6355),
        Color(0xffc05147),
      ],
      begin: Alignment.topLeft,
      end: Alignment.bottomRight,
    ),
    buttonBgColor: Color(0xff6397f8),
    buttonFgColor: Colors.white60,
    textColor: Color(0xFFEEEEEE),
    stepsColor: Color(0xff6397f8),
    borderColor: Color(0xFFEEEEEE),
    borderDotsColor: Colors.white30,
  ),
  ThemeName.windows: PuzzleThemeData(
    bgGradient: LinearGradient(
      colors: [
        Color(0xff272727),
        Color(0xff202020),
      ],
      begin: Alignment.topLeft,
      end: Alignment.bottomRight,
    ),
    mainBlockGradient: LinearGradient(
      colors: [
        Color(0xffd3d0d0),
        Color(0xff9b9a9a),
      ],
      begin: Alignment.topCenter,
      end: Alignment.bottomCenter,
    ),
    plainBlockGradient: LinearGradient(
      colors: [
        Color(0xffa7c2da),
        Color(0xff5e8dd3),
      ],
      begin: Alignment.topLeft,
      end: Alignment.bottomRight,
    ),
    buttonBgColor: Color(0xff272727),
    buttonFgColor: Colors.white70,
    textColor: Color(0xFFEEEEEE),
    stepsColor: Color(0xff343434),
    borderColor: Color(0xFFEEEEEE),
    borderDotsColor: Colors.white30,
  ),
};
